﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Capa_Negocio;
using System.Data;
using System.Data.Entity;
using Capa_Datos;
using System.Data.Objects;


namespace Capa_Negocio
{
    public class MaterialCN
    {
        #region Operaciones Mantenimiento
        public int AltaMaterial(material oMaterial)
        {
            using (ProyectoCIFP oCon = new ProyectoCIFP())
            {
                oCon.AddTomaterial(oMaterial);
                return oCon.SaveChanges();
            }
        }
        public int ModiMaterial(material oMaterial)
        {
            using (ProyectoCIFP oCon = new ProyectoCIFP())
            {
                material modi = (from m in oCon.material where m.Id_material == oMaterial.Id_material select m).First();
                modi.Nombre = oMaterial.Nombre;
                modi.Descripcion = oMaterial.Descripcion;
                return oCon.SaveChanges();
            }
            
        }
        public int BajaMaterial(material oMaterial)
        {
            using (ProyectoCIFP oCon = new ProyectoCIFP())
            {
                //No se podra borrar materiales que se hayan pedido
                material borrar = (from m in oCon.material where m.Id_material == oMaterial.Id_material select m).First();
                oCon.DeleteObject(borrar);
                return oCon.SaveChanges();
            }
        }
        #endregion
        #region Operaciones Filtrado
        public List<material> General(material oMaterial)
        {
            using (ProyectoCIFP oCon = new ProyectoCIFP())
            {
                IQueryable<material> general = from m in oCon.material select m;
                if (oMaterial.Nombre != "")
                {
                    IQueryable<material> nom = from m in oCon.material where m.Nombre.Contains(oMaterial.Nombre) select m;
                    general = general.Intersect(nom);
                }
                if (oMaterial.Descripcion != "")
                {
                    IQueryable<material> des = from m in oCon.material where m.Descripcion.Contains(oMaterial.Descripcion) select m;
                    general = general.Intersect(des);
                }
                //Ampliacion con propiedades de navegación
                return general.ToList();
            }
        }
        #endregion 
    }
}
